//--Using library vector
#include "vector"
using namespace std;
//--
#pragma once
//--Define MAXIMUM
#define MAXIMUM INT_MAX

//--Class Graph
class Graph
{
public:
	//--Function GetData
	void GetData(char *filename);
	//--
	//--Function MatrixInit
	void MatrixInit(int N,vector< vector<int> > &Array2D);
	void MatrixInit(int N,vector<int> &Array);
	//--
	//--Function Dijkstra
	void Dijkstra();
	//--
	//--Function Advance Dijkstra Type 1
	void Ad_Dijkstra_1(char *filename);
	//--
	//--Function Check Peak t
	int CheckPeak_t(int t, vector< vector<int> > V);
	//--
	//--Function Choose Peak v
	int ChoosePeak_v(vector< vector<int> >V);
	//--
protected:
	//--Input : N -> Number Of Peak
	int N;
	//--
	//--Input : L -> Weight Matrix
	vector < vector<int> >L;
	//--
	//--Input : s -> start
	int s;
	//--
	//--Input : t -> end
	int t;
	//--
	//--Output : D[k] -> Weight shortest way from s to k
	vector <int> D;
	//--
	//--Output : Labels[k] -> Peak before k in shortest way from s to k
	vector <int> Labels;
	//--
private:
};
//--